-
Notifications
You must be signed in to change notification settings - Fork 756
introduce agave-unstable-api
throughout the monorepo
#8424
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
agave-unstable-api
throughout the monorepagave-unstable-api
throughout the monorepo
The Firedancer team maintains a line-for-line reimplementation of the |
For your information, the |
66b599a
to
3ced707
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple items and a couple nits, I don't feel too strongly about alphabetizing the features in feature lists
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #8424 +/- ##
=======================================
Coverage 83.2% 83.2%
=======================================
Files 839 839
Lines 367877 367875 -2
=======================================
+ Hits 306122 306158 +36
+ Misses 61755 61717 -38 🚀 New features to boost your workflow:
|
will address in a couple hours. some of these make me question our ci since, if we actually had coverage, there's no way it would be green right now 🤔 |
To confirm, you're not talking about alphabetizing right (that is seemingly a setting to be turned on if such a setting exists) ? As for the other items - Looking at Line 163 in ee1b5d0
I'm guessing having stuff gated twice behind |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I might be missing something really obvious, but isn't this a breaking change for anyone using default-features = false
on any crates currently?
Since every crate has #![cfg(feature = "agave-unstable-api")]
at the top, it means that downstream users get nothing if agave-unstable-api
is disabled.
We probably just want to add the crate feature to every Cargo.toml and that's it, no?
Edit: otherwise, we're just creating completely unnecessary churn for downstream people who will just blindly add agave-unstable-api
to all of their agave deps
actually the svm rent-collector one. ci should have puked but i bet it just has zero coverage |
technically yes, but how many of those are there and they are using what we deem to be unstable api. is there a lower touch path here?
that is ultimately the desired effect. to anyone who comes to us about broken interfaces in these crates i want to be able to say, "what did you think that
maybe?
downstream is invalid here. the point of the crate feature is to make them admit they're using unstable crates |
It would appear that the following crates might break with default features disabled:
For the most part our crates do not have default features enabled=>amount of breakage would be limited. We could of course do what @t-nelson is proposing for those crates that do not have default-features, and what @joncinque for the rest. |
most of these are bin crates. all of the lib crates where there was a problem were caught by ci and corrected already. do you have a specific instances that needs corrected? |
everything here is addressed now |
No I think we're good, just copied the data here for the record. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gregcusack do we want to blanket agave-unstable-api over gossip? I think it might be a bit overkill in this case as it is likely to be used externally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isn't the agave-unstable-api
on by default? so end users shouldn't be affected? They can still use the gossip crate
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, true, the point is we have hidden a bunch of unstable multihoming logic behind this flag, enabling it by default would allow external users to depend on that API
turbine/Cargo.toml
Outdated
edition = { workspace = true } | ||
|
||
[features] | ||
default = ["agave-unstable-api"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We explicitly did not want to have turbine exposed at all as we intend to have breaking changes there. adding this to default features would undo that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the whole point of this change set is to give us free reign to break these interfaces. if something is gated by this crate feature, we tell anyone complaining about breakage to fuck off
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes but right now turbine already has it disabled by default, and entirety of its API is invisible already since 3.0. No point exposing it again.
I believe this PR may expose a bunch of things we have already hidden behind agave-unstable-api by making it a default feature, which is not ideal. Not sure if there is a good workaround for that. |
oh yesssss i see what you are saying. true. if our original intent was "if you want to use multihoming, know it's all unstable". and now our intent is "if you want to use gossip, know it is all unstable". then i think we're generally fine since the multihoming stuff is kinda a subset of gossip stuff. |
…client-types` crate
ok this is updated as per comments on the issue. we have relaxed the initial behavior to throw a deprecation warning if the any crates that had partially employed bin crates have now been dropped where convenient there are at least two outstanding issues, which are that |
Problem
we publish a bunch of crates from the monorepo that we have no desire to adhere to semver or in any way maintain a stable api. people use these crates anyway, then cry when we break them. See #8424
Summary of Changes
make consumers of unstable apis sign a contract
agave-unstable-api
lib.rs
) of every crate on itdefault
feature, to avoid breaking anyone todayNOTE: this is a ham-fisted first pass. it blankets every crate. even the ones that we do more or less intend to be consumed. i'm indifferent as to whether we want to try to make those determinations here, or wait 'til later. there's no time crunch until we're ready to cut v4.0.0. i'll merge this with rebase+merge strategy to
pad my github metricsease reverting the changes on any crates after the factwhen we branch v4.0, we will remove
agave-unstable-api
fromdefault
features, freeing us of our burdencloses #3724